#ifndef SHADERRENDERWIDGET_H
#define SHADERRENDERWIDGET_H
#include<QOpenGLWidget>
#include<QOpenGLFunctions>
#include<QOpenGLShaderProgram>
#include<QOpenGLBuffer>
#include<QOpenGLVertexArrayObject>
#include<QTime>
class ShaderRenderWidget:public QOpenGLWidget, protected QOpenGLFunctions
{
public:
    explicit ShaderRenderWidget(QWidget* parent = nullptr);
    ~ShaderRenderWidget();
    void initializeGL() override;
    void resizeGL(int w, int h) override;
    void paintGL() override;
    void updateFragmentSource(const QString& source);
    void stop();
protected:
    void mouseMoveEvent(QMouseEvent *event) override;
private:
    QOpenGLShaderProgram* mp_program;
    QOpenGLBuffer* m_vbo;
    QOpenGLVertexArrayObject* m_vao;
    QString fragmentSource;
    QTime* startTime;
    bool isStart = false;
    bool isInitGL = false;
    bool isPlaying = false;
    float iTime;
    float iTimeDelta;
    QVector4D iMouse;
};

#endif // SHADERRENDERWIDGET_H
